<?php

/**
 * concessao actions.
 *
 * @package    SCBE
 * @subpackage concessao
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class concessaoActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
    $this->cadconcessaos = Doctrine_Core::getTable('cadconcessao')
      ->createQuery('a')
      ->leftJoin('a.Cadpedido b')
      ->innerJoin('b.Cadpessoa')
      ->where('b.Idstatus = 3')
      ->execute();
  }

  public function executeShow(sfWebRequest $request)
  {
    $this->cadconcessao = Doctrine_Core::getTable('cadconcessao')->find(array($request->getParameter('idconcessao')));
    $this->forward404Unless($this->cadconcessao);
  }

  public function executeNew(sfWebRequest $request)
  {
    $this->form = new cadconcessaoForm();
  }

  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));

    $this->form = new cadconcessaoForm();

    $this->processForm($request, $this->form);

    $this->setTemplate('new');
  }

  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404Unless($cadconcessao = Doctrine_Core::getTable('cadconcessao')->find(array($request->getParameter('idconcessao'))), sprintf('Object cadconcessao does not exist (%s).', $request->getParameter('idconcessao')));
    $this->form = new cadconcessaoForm($cadconcessao);
  }

  public function executeUpdate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($cadconcessao = Doctrine_Core::getTable('cadconcessao')->find(array($request->getParameter('idconcessao'))), sprintf('Object cadconcessao does not exist (%s).', $request->getParameter('idconcessao')));
    $this->form = new cadconcessaoForm($cadconcessao);

    $this->processForm($request, $this->form);

    $this->setTemplate('edit');
  }

  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();

    $this->forward404Unless($cadconcessao = Doctrine_Core::getTable('cadconcessao')->find(array($request->getParameter('idconcessao'))), sprintf('Object cadconcessao does not exist (%s).', $request->getParameter('idconcessao')));
    $cadconcessao->delete();

    $this->redirect('concessao/index');
  }

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      $cadconcessao = $form->save();
      
      if ($cadconcessao['envioudocumentos'] == 0) {
          $novoStatus = 8;
          
          $this->executeUpdateStatus($cadconcessao['idpedido'], $novoStatus);
      }

      $this->redirect('concessao/edit?idconcessao='.$cadconcessao->getIdconcessao());
    }
  }
  
  public function executeEnviaPagamento(sfWebRequest $request)
  {   
      $this->executeUpdateStatus($request->getParameter('idpedido'),$request->getParameter('idstatus'));
      
      $this->redirect('concessao/index');
  }
  
  public function executeUpdateStatus($idpedido,$idstatus)
  {
      $result = Doctrine_Core::getTable('Cadpedido')->mudarStatus($idpedido,$idstatus);
      
      echo $result;
      
      return;
  }
  
  public function executeCartaConcessao(sfWebRequest $request)
  {
    $this->getContext()->getConfiguration()->loadHelpers('Partial');
    
    $mpdf = new mPDF('','A4','','',20,20,37,37,15,3);
    $mpdf->useOnlyCoreFonts = true;    // false is default
    $mpdf->SetWatermarkText("SCBE");
    $mpdf->showWatermarkText = true;
    $mpdf->watermark_font = 'DejaVuSansCondensed';
    $mpdf->watermarkTextAlpha = 0.2;
    $mpdf->SetDisplayMode('real');
    $stylesheet = file_get_contents('css/relatorios.css');
      
    $mpdf->WriteHTML($stylesheet,1);
    $mpdf->SetHTMLHeader(get_partial('header'));
    $mpdf->SetHTMLFooter(get_partial('footer'));
    $mpdf->SetMargins(0, 0, 40); 
 
    $this->getContext()->getConfiguration()->loadHelpers('Partial'); 
 
    
//    $dataInicio = date('d/m/Y',strtotime($this->dadoscarta[0]['DataInicioPedido']));
//    $dataTermino = date('d/m/Y',strtotime($this->dadoscarta[0]['DataTerminoPedido']));
    
    
    $mensalidade = 1;
    $Auxíliopassagem = 2;
    $Auxílioinstalação = 3;
    $Segurosaude = 4;
    
    $this->dadoscarta       = Doctrine_Core::getTable('Cadconcessao')->dadosConcessao($request->getParameter('idconcessao'));
    $this->valorMensalidade = Doctrine_Core::getTable('Cadconcessao')->dadosPagamento($this->dadoscarta[0]['IdProjetos'],$mensalidade);
    $this->valorPassagem    = Doctrine_Core::getTable('Cadconcessao')->dadosPagamento($this->dadoscarta[0]['IdProjetos'],$Auxíliopassagem);
    $this->valorInstalacao  = Doctrine_Core::getTable('Cadconcessao')->dadosPagamento($this->dadoscarta[0]['IdProjetos'],$Auxílioinstalação);
    $this->valorSaude       = Doctrine_Core::getTable('Cadconcessao')->dadosPagamento($this->dadoscarta[0]['IdProjetos'],$Segurosaude);
    $this->qtdMeses         = $this->diffDate($this->dadoscarta[0]['DataInicioPedido'],$this->dadoscarta[0]['DataTerminoPedido'],'M');
    $this->dataAtual        = self::formata_data_extenso( date( 'd-m-Y' ) );
    
    $html = '';
    
    $html.= get_partial('carta',array('dadoscarta' => $this->dadoscarta,'valorMensalidade'=>$this->valorMensalidade,'valorPassagem'=>$this->valorPassagem,'valorInstalacao'=>$this->valorInstalacao,'valorSaude'=>$this->valorSaude, 'qtdMeses'=>$this->qtdMeses, 'dataAtual'=>$this->dataAtual ) );
    
    $mpdf->WriteHTML($html);
    $mpdf->Output();   
  }

  function diffDate($d1, $d2, $type='', $sep='-')
  {
     $d1 = explode($sep, $d1);
     $d2 = explode($sep, $d2);
     switch ($type)
     {
         case 'A':
         $X = 31536000;
         break;
         case 'M':
         $X = 2592000;
         break;
         case 'D':
         $X = 86400;
         break;
         case 'H':
         $X = 3600;
         break;
         case 'MI':
         $X = 60;
         break;
         default:
         $X = 1;
     }
     return floor(   ( mktime(0, 0, 0, $d2[1], $d2[2], $d2[0] ) - mktime(0, 0, 0, $d1[1], $d1[2], $d1[0] ) ) / $X  );
  }
  
  /**
  * Esta função retorna uma data escrita da seguinte maneira:
  * Exemplo: Terça-feira, 17 de Abril de 2007
  * @author Felipe Henrique C de Moura
  * @param string $strDate data a ser analizada; por exemplo: 2007-04-17 15:10:59
  * @return string
  */
  function formata_data_extenso($strDate)
  {
      # Array com os dia da semana em português;
      $arrDaysOfWeek = array( 'Domingo' , 'Segunda-feira' , 'Terça-feira' , 'Quarta-feira' , 'Quinta-feira' , 'Sexta-feira' , 'Sábado' );
      
      # Array com os meses do ano em português;
      $arrMonthsOfYear = array( 1 => 'Janeiro' , 'Fevereiro' , 'Março' , 'Abril' , 'Maio' , 'Junho' , 'Julho' , 'Agosto' , 'Setembro' , 'Outubro' , 'Novembro' , 'Dezembro' );

      # Descobre o dia da semana
      $intDayOfWeek = date('w',strtotime($strDate));
      
      # Descobre o dia do mês
      $intDayOfMonth = date('d',strtotime($strDate));
      
      # Descobre o mês
      $intMonthOfYear = date('n',strtotime($strDate));
      
      # Descobre o ano
      $intYear = date('Y',strtotime($strDate));
      
      # Formato a ser retornado
      //return 'Brasília' . ', ' . $arrDaysOfWeek[$intDayOfWeek] . ', ' . $intDayOfMonth . ' de ' . $arrMonthsOfYear[$intMonthOfYear] . ' de ' . $intYear;
      return 'Brasília' . ', ' . $intDayOfMonth . ' de ' . $arrMonthsOfYear[$intMonthOfYear] . ' de ' . $intYear;
  }
}
